/**
 * @file: post_process.h
 * @author: sdk team
 * @brief
 * @version: 1.0
 * @date 2022-10-09
 *
 * Copyright:
 * © 2018 北京灵汐科技有限公司 版权所有。
 * 注意：以下内容均为北京灵汐科技有限公司原创，未经本公司允许，不得转载，否则将视为侵权；对于不遵守此声明或者其他违法使用以下内容者，本公司依法保留追究权。
 * © 2018 Lynxi Technologies Co., Ltd. All rights reserved.
 * NOTICE: All information contained here is, and remains the property of Lynxi.
 * This file can not be copied or distributed without the permission of Lynxi
 * Technologies Co., Ltd.
 */
#ifndef __POST_PROCESS_H__
#define __POST_PROCESS_H__

#include "boxInfo.h"

#ifdef __cplusplus
extern "C" {
#endif

// todo for face detect, need LandmarksInfo from tangchao's algorithm

// 一个推理结果
typedef struct {
  float xmin;
  float ymin;
  float xmax;
  float ymax;
  float area;
  float score;
  int id;
  char class_name[TEXT_MAX_LEN];
  float landmark[10]; // 关键点x,y坐标
} BboxResult;

// label信息
typedef struct {
  char name[64];
} LabelInfo;

// label列表
typedef struct {
  LabelInfo *labels; // 注意: Lynxi plugin方式时需要使用device
                     // memory传递，否则使用系统内存
  int labelNum;
} LabelList;

typedef struct {
  int height;            // model
  int width;             // model
  int ori_height;        // image
  int ori_width;         // image
  float score_threshold; // 0.25
  float nms_threshold;   // 0.45
  int nms_top_k;         // 500
  int is_pad_resize;
  void *output_tensor; // 注意: Lynxi plugin方式时需要使用device
                       // memory传递，否则使用系统内存
  int class_num;
  LabelList labelList;
  lynBoxesInfo *boxesInfo; // 输出box信息, Lynxi plugin方式时需要使用device
                           // memory传递，否则使用系统内存
  int anchorSize = 3;
} YoloxPostProcessInfo_t;

int lynYoloxPostProcess(YoloxPostProcessInfo_t *post_info);

#ifdef __cplusplus
}
#endif

#endif